<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Chapter 15. Zend_Feed</title>
<link rel="stylesheet" href="dbstyle.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.72.0">
<link rel="start" href="index.html" title="Programmer's Reference Guide">
<link rel="up" href="index.html" title="Programmer's Reference Guide">
<link rel="prev" href="zend.exception.html" title="Chapter 14. Zend_Exception">
<link rel="next" href="zend.feed.importing.html" title="15.2. Importing Feeds">
<link rel="chapter" href="introduction.html" title="Chapter 1. Introduction to Zend Framework">
<link rel="chapter" href="zend.acl.html" title="Chapter 2. Zend_Acl">
<link rel="chapter" href="zend.auth.html" title="Chapter 3. Zend_Auth">
<link rel="chapter" href="zend.cache.html" title="Chapter 4. Zend_Cache">
<link rel="chapter" href="zend.config.html" title="Chapter 5. Zend_Config">
<link rel="chapter" href="zend.console.getopt.html" title="Chapter 6. Zend_Console_Getopt">
<link rel="chapter" href="zend.controller.html" title="Chapter 7. Zend_Controller">
<link rel="chapter" href="zend.currency.html" title="Chapter 8. Zend_Currency">
<link rel="chapter" href="zend.date.html" title="Chapter 9. Zend_Date">
<link rel="chapter" href="zend.db.html" title="Chapter 10. Zend_Db">
<link rel="chapter" href="zend.debug.html" title="Chapter 11. Zend_Debug">
<link rel="chapter" href="zend.dojo.html" title="Chapter 12. Zend_Dojo">
<link rel="chapter" href="zend.dom.html" title="Chapter 13. Zend_Dom">
<link rel="chapter" href="zend.exception.html" title="Chapter 14. Zend_Exception">
<link rel="chapter" href="zend.feed.html" title="Chapter 15. Zend_Feed">
<link rel="chapter" href="zend.filter.html" title="Chapter 16. Zend_Filter">
<link rel="chapter" href="zend.form.html" title="Chapter 17. Zend_Form">
<link rel="chapter" href="zend.gdata.html" title="Chapter 18. Zend_Gdata">
<link rel="chapter" href="zend.http.html" title="Chapter 19. Zend_Http">
<link rel="chapter" href="zend.infocard.html" title="Chapter 20. Zend_InfoCard">
<link rel="chapter" href="zend.json.html" title="Chapter 21. Zend_Json">
<link rel="chapter" href="zend.layout.html" title="Chapter 22. Zend_Layout">
<link rel="chapter" href="zend.ldap.html" title="Chapter 23. Zend_Ldap">
<link rel="chapter" href="zend.loader.html" title="Chapter 24. Zend_Loader">
<link rel="chapter" href="zend.locale.html" title="Chapter 25. Zend_Locale">
<link rel="chapter" href="zend.log.html" title="Chapter 26. Zend_Log">
<link rel="chapter" href="zend.mail.html" title="Chapter 27. Zend_Mail">
<link rel="chapter" href="zend.measure.html" title="Chapter 28. Zend_Measure">
<link rel="chapter" href="zend.memory.html" title="Chapter 29. Zend_Memory">
<link rel="chapter" href="zend.mime.html" title="Chapter 30. Zend_Mime">
<link rel="chapter" href="zend.openid.html" title="Chapter 31. Zend_OpenId">
<link rel="chapter" href="zend.paginator.html" title="Chapter 32. Zend_Paginator">
<link rel="chapter" href="zend.pdf.html" title="Chapter 33. Zend_Pdf">
<link rel="chapter" href="zend.registry.html" title="Chapter 34. Zend_Registry">
<link rel="chapter" href="zend.rest.html" title="Chapter 35. Zend_Rest">
<link rel="chapter" href="zend.search.lucene.html" title="Chapter 36. Zend_Search_Lucene">
<link rel="chapter" href="zend.server.html" title="Chapter 37. Zend_Server">
<link rel="chapter" href="zend.service.html" title="Chapter 38. Zend_Service">
<link rel="chapter" href="zend.session.html" title="Chapter 39. Zend_Session">
<link rel="chapter" href="zend.soap.html" title="Chapter 40. Zend_Soap">
<link rel="chapter" href="zend.test.html" title="Chapter 41. Zend_Test">
<link rel="chapter" href="zend.text.html" title="Chapter 42. Zend_Text">
<link rel="chapter" href="zend.timesync.html" title="Chapter 43. Zend_TimeSync">
<link rel="chapter" href="zend.translate.html" title="Chapter 44. Zend_Translate">
<link rel="chapter" href="zend.uri.html" title="Chapter 45. Zend_Uri">
<link rel="chapter" href="zend.validate.html" title="Chapter 46. Zend_Validate">
<link rel="chapter" href="zend.version.html" title="Chapter 47. Zend_Version">
<link rel="chapter" href="zend.view.html" title="Chapter 48. Zend_View">
<link rel="chapter" href="zend.xmlrpc.html" title="Chapter 49. Zend_XmlRpc">
<link rel="appendix" href="requirements.html" title="Appendix A. Zend Framework Requirements">
<link rel="appendix" href="coding-standard.html" title="Appendix B. Zend Framework Coding Standard for PHP">
<link rel="appendix" href="copyrights.html" title="Appendix C. Copyright Information">
<link rel="index" href="the.index.html" title="Index">
<link rel="section" href="zend.feed.html#zend.feed.introduction" title="15.1. Introduction">
<link rel="section" href="zend.feed.importing.html" title="15.2. Importing Feeds">
<link rel="section" href="zend.feed.findFeeds.html" title="15.3. Retrieving Feeds from Web Pages">
<link rel="section" href="zend.feed.consuming-rss.html" title="15.4. Consuming an RSS Feed">
<link rel="section" href="zend.feed.consuming-atom.html" title="15.5. Consuming an Atom Feed">
<link rel="section" href="zend.feed.consuming-atom-single-entry.html" title="15.6. Consuming a Single Atom Entry">
<link rel="section" href="zend.feed.modifying-feed.html" title="15.7. Modifying Feed and Entry structures">
<link rel="section" href="zend.feed.custom-feed.html" title="15.8. Custom Feed and Entry Classes">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader"><table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">Chapter 15. Zend_Feed</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="zend.exception.html">Prev</a> </td>
<th width="60%" align="center"> </th>
<td width="20%" align="right"> <a accesskey="n" href="zend.feed.importing.html">Next</a>
</td>
</tr>
</table></div>
<div class="chapter" lang="en">
<div class="titlepage"><div><div><h2 class="title">
<a name="zend.feed"></a>Chapter 15. Zend_Feed</h2></div></div></div>
<div class="toc">
<p><b>Table of Contents</b></p>
<dl>
<dt><span class="sect1"><a href="zend.feed.html#zend.feed.introduction">15.1. Introduction</a></span></dt>
<dt><span class="sect1"><a href="zend.feed.importing.html">15.2. Importing Feeds</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="zend.feed.importing.html#zend.feed.importing.custom">15.2.1. Custom feeds</a></span></dt>
<dd><dl>
<dt><span class="sect3"><a href="zend.feed.importing.html#zend.feed.importing.custom.importarray">15.2.1.1. Importing a custom array</a></span></dt>
<dt><span class="sect3"><a href="zend.feed.importing.html#zend.feed.importing.custom.importbuilder">15.2.1.2. Importing a custom data source</a></span></dt>
<dt><span class="sect3"><a href="zend.feed.importing.html#zend.feed.importing.custom.dump">15.2.1.3. Dumping the contents of a feed</a></span></dt>
</dl></dd>
</dl></dd>
<dt><span class="sect1"><a href="zend.feed.findFeeds.html">15.3. Retrieving Feeds from Web Pages</a></span></dt>
<dt><span class="sect1"><a href="zend.feed.consuming-rss.html">15.4. Consuming an RSS Feed</a></span></dt>
<dt><span class="sect1"><a href="zend.feed.consuming-atom.html">15.5. Consuming an Atom Feed</a></span></dt>
<dt><span class="sect1"><a href="zend.feed.consuming-atom-single-entry.html">15.6. Consuming a Single Atom Entry</a></span></dt>
<dt><span class="sect1"><a href="zend.feed.modifying-feed.html">15.7. Modifying Feed and Entry structures</a></span></dt>
<dt><span class="sect1"><a href="zend.feed.custom-feed.html">15.8. Custom Feed and Entry Classes</a></span></dt>
</dl>
</div>
<div class="sect1" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="zend.feed.introduction"></a>15.1. Introduction</h2></div></div></div>
<p>
        <code class="code">Zend_Feed</code> provides functionality for consuming RSS and Atom feeds. It provides a
        natural syntax for accessing elements of feeds, feed attributes, and entry attributes.
        <code class="code">Zend_Feed</code> also has extensive support for modifying feed and entry structure with the
        same natural syntax, and turning the result back into XML. In the future, this modification support
        could provide support for the Atom Publishing Protocol.
    </p>
<p>
        Programmatically, <code class="code">Zend_Feed</code> consists of a base <code class="code">Zend_Feed</code> class, abstract
        <code class="code">Zend_Feed_Abstract</code> and <code class="code">Zend_Feed_Entry_Abstract</code> base classes for
        representing Feeds and Entries, specific implementations of feeds and entries for RSS and Atom, and
        a behind-the-scenes helper for making the natural syntax magic work.
    </p>
<p>
        In the example below, we demonstrate a simple use case of retrieving an RSS feed and saving relevant
        portions of the feed data to a simple PHP array, which could then be used for printing the data, storing
        to a database, etc.
    </p>
<div class="note"><table border="0" summary="Note: Be aware">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"></td>
<th align="left">Be aware</th>
</tr>
<tr><td align="left" valign="top"><p>
            Many RSS feeds have different channel and item properties available. The RSS specification provides for
            many optional properties, so be aware of this when writing code to work with RSS data.
        </p></td></tr>
</table></div>
<div class="example">
<a name="zend.feed.introduction.example.rss"></a><p class="title"><b>Example 15.1. Putting Zend_Feed to Work on RSS Feed Data</b></p>
<div class="example-contents"><pre class="programlisting">&lt;?php
require_once 'Zend/Feed.php';

// Fetch the latest Slashdot headlines
try {
    $slashdotRss = Zend_Feed::import('http://rss.slashdot.org/Slashdot/slashdot');
} catch (Zend_Feed_Exception $e) {
    // feed import failed
    echo "Exception caught importing feed: {$e-&gt;getMessage()}\n";
    exit;
}

// Initialize the channel data array
$channel = array(
    'title'       =&gt; $slashdotRss-&gt;title(),
    'link'        =&gt; $slashdotRss-&gt;link(),
    'description' =&gt; $slashdotRss-&gt;description(),
    'items'       =&gt; array()
    );

// Loop over each channel item and store relevant data
foreach ($slashdotRss as $item) {
    $channel['items'][] = array(
        'title'       =&gt; $item-&gt;title(),
        'link'        =&gt; $item-&gt;link(),
        'description' =&gt; $item-&gt;description()
        );
}
        </pre></div>
</div>
<br class="example-break">
</div>
</div>
<div class="navfooter"><table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="zend.exception.html">Prev</a> </td>
<td width="20%" align="center"> </td>
<td width="40%" align="right"> <a accesskey="n" href="zend.feed.importing.html">Next</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Chapter 14. Zend_Exception </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td>
<td width="40%" align="right" valign="top"> 15.2. Importing Feeds</td>
</tr>
</table></div>
<div class="revinfo"></div>
</body>
</html>
